package com.hejjon.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hejjon.core.domain.entity.SysDatabase;
import com.hejjon.domain.bo.RunInsertSqlBO;
import com.hejjon.domain.bo.RunQuerySqlBO;
import com.hejjon.domain.bo.RunSqlBO;
import com.hejjon.domain.bo.RunUpdateSqlBO;
import com.hejjon.domain.dto.DatabaseDTO;
import com.hejjon.domain.dto.DatabaseQueryDTO;
import com.hejjon.domain.vo.DatabaseTreeNodeVO;
import com.hejjon.domain.vo.DatabaseVO;

import java.sql.Connection;
import java.util.List;
import java.util.Map;

/**
 * @author: cs
 * @date: 2025-02-24 11:05:17
 * @since: 1.0
 */
public interface ISysDatabaseService extends IService<SysDatabase> {


    List<DatabaseTreeNodeVO> findDatabaseTreeList();


    /**
     * 新建数据库
     */
    boolean create(DatabaseDTO ds);


    /**
     * 查询数据库列表
     */
    List<DatabaseVO> findList(DatabaseQueryDTO queryDTO);


    /**
     * 根据id列表删除
     * delDb 是否删除物理数据库
     */
    // boolean deleteByIds(DatabaseDTO dto);
    boolean remove(DatabaseDTO dto);


    void executeCreateTable(Connection connection, String databaseName, String createTableSQL);


    /**
     * 加载执行 DDL sql语句的业务 Bean
     */
    RunSqlBO loadRunSqlBO(String databaseId);



    /**
     * 执行删除表 sql
     */
    boolean executeDropTables(RunSqlBO runSqlBO, List<String> tableNameList);


    /**
     * 执行更新语句
     */
    int executeUpdate(RunUpdateSqlBO updateSqlBO);

    /**
     * 查询
     */
    List<Map<String, Object>> executeQuery(RunQuerySqlBO querySqlBO);

    /**
     * 插入
     */
    int executeInsert(RunInsertSqlBO insertSqlBO);




}
